/**
 * <strong>Title : WarehouseDao.java<br>
 * </strong> <strong>Package : cn.b.sky.mes.mm.dao<br>
 * </strong> <strong>Description : </strong>@类注释说明写在此处@<br>
 * <strong>Create on : 2016年3月1日 下午1:46:32<br>
 * </strong>
 * <p>
 * @author dapeng.li<br>
 * @version <strong>v1.0.0</strong><br>
 * <br>
 *          <strong>修改历史:</strong><br>
 *          修改人 | 修改日期 | 修改描述<br>
 *          -------------------------------------------<br>
 * <br>
 * <br>
 */
package cn.b.sky.mes.mm.dao;

import java.util.List;

import cn.b.sky.mes.mm.model.Warehouse;
import org.apache.ibatis.annotations.Param;

import cn.b.sky.mes.mm.model.StorageLocationType;
import cn.b.sky.mes.mm.model.condition.WarehouseCondition;

/**
 * <strong>Title : WarehouseDao.java<br>
 * </strong> <strong>Package : cn.b.sky.mes.mm.dao<br>
 * </strong> <strong>Description : </strong>仓库主数据持久层接口<br>
 * <strong>Create on : 2016年3月1日 下午1:46:32<br>
 * </strong>
 * <p> 
 * 
 * @author dapeng.li<br>
 * @version <strong>v1.0.0</strong><br>
 * <br>
 *          <strong>修改历史:</strong><br>
 *          修改人 | 修改日期 | 修改描述<br>
 *          -------------------------------------------<br>
 * <br>
 * <br>
 */
public interface WarehouseDao {

  /**
   * <strong>Title : selectWarehouseListByCondition<br>
   * </strong> <strong>Description : </strong>条件查询仓库列表<br>
   * <strong>Create on : 2016年3月1日 下午2:02:10<br>
   * </strong>
   * <p>
   * 
   * @param condition
   * @return List<Warehouse>
   * @throws
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   *          <strong>修改历史:</strong><br>
   *          修改人 | 修改日期 | 修改描述<br>
   *          -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<Warehouse> selectWarehouseListByCondition(WarehouseCondition condition);

  /**
   * <strong>Title : selectWarehouseCountByCondition<br>
   * </strong> <strong>Description : </strong>条件获取仓库总数<br>
   * <strong>Create on : 2016年3月1日 下午2:02:21<br>
   * </strong>
   * <p>
   * 
   * @param condition
   * @return int
   * @throws
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   *          <strong>修改历史:</strong><br>
   *          修改人 | 修改日期 | 修改描述<br>
   *          -------------------------------------------<br>
   * <br>
   * <br>
   */
  int selectWarehouseCountByCondition(WarehouseCondition condition);

  /**
   * <strong>Title : updateWarehouse<br>
   * </strong> <strong>Description : </strong>更新仓库<br>
   * <strong>Create on : 2016年3月1日 下午2:02:27<br>
   * </strong>
   * <p>
   * 
   * @param warehouse
   *            void
   * @throws
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   *          <strong>修改历史:</strong><br>
   *          修改人 | 修改日期 | 修改描述<br>
   *          -------------------------------------------<br>
   * <br>
   * <br>
   */
  void updateWarehouse(Warehouse warehouse);

  /**
   * <strong>Title : deleteWarehouse<br>
   * </strong> <strong>Description : </strong>删除仓库<br>
   * <strong>Create on : 2016年3月1日 下午2:02:33<br>
   * </strong>
   * <p>
   * 
   * @param warehouseCode
   * @param siteCode
   *            void
   * @throws
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   *          <strong>修改历史:</strong><br>
   *          修改人 | 修改日期 | 修改描述<br>
   *          -------------------------------------------<br>
   * <br>
   * <br>
   */
  void deleteWarehouse(@Param("warehouseCode") String warehouseCode, @Param("siteCode") String siteCode);

  /**
   * <strong>Title : getWarehouse<br>
   * </strong> <strong>Description : </strong>获得仓库实体<br>
   * <strong>Create on : 2016年3月1日 下午2:02:38<br>
   * </strong>
   * <p>
   * 
   * @param warehouseCode
   * @param siteCode
   * @return Warehouse
   * @throws
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   *          <strong>修改历史:</strong><br>
   *          修改人 | 修改日期 | 修改描述<br>
   *          -------------------------------------------<br>
   * <br>
   * <br>
   */
  Warehouse getWarehouse(@Param("warehouseCode") String warehouseCode, @Param("siteCode") String siteCode);

  /**
   * <strong>Title : insertWarehouse<br>
   * </strong> <strong>Description : </strong>新增仓库<br>
   * <strong>Create on : 2016年3月1日 下午2:03:47<br>
   * </strong>
   * <p>
   * 
   * @param warehouse
   *            void
   * @throws
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   *          <strong>修改历史:</strong><br>
   *          修改人 | 修改日期 | 修改描述<br>
   *          -------------------------------------------<br>
   * <br>
   * <br>
   */
  void insertWarehouse(Warehouse warehouse);

  /**
   * <strong>Title : selectStorageLocationListByWarehouseCode<br>
   * </strong> <strong>Description : </strong>查询当前仓库下的已分配库位<br>
   * <strong>Create on : 2016年3月1日 下午6:06:20<br>
   * </strong>
   * <p>
   * 
   * @param id
   * @param siteCode
   * @return List<StorageLocation>
   * @throws
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   *          <strong>修改历史:</strong><br>
   *          修改人 | 修改日期 | 修改描述<br>
   *          -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<StorageLocationType> selectStorageLocationListByWarehouseCode(@Param("warehouseCode") String warehouseCode,
      @Param("siteCode") String siteCode);

  /**
   * 
   * <strong>Title : selectWarehouseListBySiteCode<br>
   * </strong> <strong>Description : </strong>查询工厂下的全部仓库<br>
   * <strong>Create on : 2016-3-4 下午3:37:11<br>
   * </strong>
   * <p>
   * 
   * @param siteCode
   * @return List<Warehouse>
   * @throws
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   *          <strong>修改历史:</strong><br>
   *          修改人 | 修改日期 | 修改描述<br>
   *          -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<Warehouse> selectWarehouseListBySiteCode(String siteCode);

  /**
   * 
   * <strong>Title : selectWarehouseListSuggests<br>
   * </strong> <strong>Description : </strong>仓库搜索建议<br>
   * <strong>Create on : 2016年4月11日 下午8:06:54<br>
   * </strong>
   * <p>
   * 
   * @param condition
   * @return List<Warehouse>
   * @throws
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   *          <strong>修改历史:</strong><br>
   *          修改人 | 修改日期 | 修改描述<br>
   *          -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<Warehouse> selectWarehouseListSuggests(WarehouseCondition condition);
  
  /**
   * 
   * <strong>Title : selectUnLockWarehouseListBySiteCode<br></strong>
   * <strong>Description : </strong>查询工厂下所有未锁定仓库<br> 
   * <strong>Create on : 2016年9月12日 下午5:04:02<br></strong>
   * <p>
   * @param siteCode
   * @return
   * List<Warehouse>
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<Warehouse> selectUnLockWarehouseListBySiteCode(String siteCode);

}
